package cn.sxt.oop;

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;

public class 身份证推算 {
    public static void main(String[] args) {
        ArrayList<String> strings = new ArrayList<>();
        String s = "50022619951026";
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                for (int z = 0; z < 10; z++) {
                    for (int k = 0; k < 10; k ++) {
                        if (k == 0) {
                            strings.add(s + i + j + z + "X");
                        } else {
                            strings.add(s + i + j + z + k);
                        }
                    }
                }
            }
        }
        chaxun(strings);
    }


    public static void chaxun(List<String> strs) {
        int f =0;
        for (String str : strs) {

            String[] ValCodeArr = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
            String[] Wi = {"7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7",
                    "9", "10", "5", "8", "4", "2"};
            String Ai = "";
            String Ai1 = "";
            String Ai2 = "";

            //数字 除最后以为都为数字
            if (str.length() == 18) {
                Ai = str.substring(0, 17);
            }
            //判断最后一位的值
            int TotalmulAiWi = 0;
            for (int i = 0; i < 17; i++) {
                TotalmulAiWi = TotalmulAiWi
                        + Integer.parseInt(String.valueOf(Ai.charAt(i)))
                        * Integer.parseInt(Wi[i]);
            }
            int modValue = TotalmulAiWi % 11;
            String strVerifyCode = ValCodeArr[modValue];
            Ai1 = Ai + strVerifyCode.toUpperCase();
            Ai2 = Ai + strVerifyCode.toLowerCase();

            if (Ai1.equals(str) == false && Ai2.equals(str) == false) {
            }else {
                System.out.println(str);
            }
        }
    }
}
